import service from '../utils/request'

// ==================== 论坛讨论相关 API ====================

/**
 * 获取讨论列表
 * @param {Object} params 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页数量
 * @param {string} params.sort - 排序方式：latest/hot/top
 * @param {string} params.tag - 标签筛选
 * @param {string} params.keyword - 关键字搜索
 */
export function getDiscussionList(params) {
  return service.get('/api/discussions', { 
    params: params || {}
  })
}

/**
 * 获取讨论详情
 * @param {number} discussionId 讨论ID
 */
export function getDiscussionDetail(discussionId) {
  return service.get(`/api/discussions/${discussionId}`)
}

/**
 * 创建讨论
 * @param {Object} data 讨论数据
 * @param {string} data.title - 标题
 * @param {string} data.content - 内容
 * @param {Array} data.tags - 标签数组
 * @param {Array} data.images - 图片数组
 */
export function createDiscussion(data) {
  return service.post('/api/discussions', data)
}

/**
 * 更新讨论
 * @param {number} discussionId 讨论ID
 * @param {Object} data 讨论数据
 */
export function updateDiscussion(discussionId, data) {
  return service.put(`/api/discussions/${discussionId}`, data)
}

/**
 * 删除讨论
 * @param {number} discussionId 讨论ID
 */
export function deleteDiscussion(discussionId) {
  return service.delete(`/api/discussions/${discussionId}`)
}

/**
 * 点赞/取消点赞讨论
 * @param {number} discussionId 讨论ID
 */
export function likeDiscussion(discussionId) {
  return service.post(`/api/discussions/${discussionId}/like`)
}

/**
 * 收藏/取消收藏讨论
 * @param {number} discussionId 讨论ID
 */
export function favoriteDiscussion(discussionId) {
  return service.post(`/api/discussions/${discussionId}/favorite`)
}

/**
 * 获取讨论评论
 * @param {number} discussionId 讨论ID
 * @param {Object} params 查询参数
 */
export function getDiscussionComments(discussionId, params) {
  return service.get(`/api/discussions/${discussionId}/comments`, { 
    params: params || {}
  })
}

/**
 * 添加讨论评论
 * @param {number} discussionId 讨论ID
 * @param {Object} data 评论数据
 * @param {string} data.content - 评论内容
 * @param {number} data.parentId - 父评论ID（可选）
 */
export function addDiscussionComment(discussionId, data) {
  return service.post(`/api/discussions/${discussionId}/comments`, data)
}

/**
 * 点赞/取消点赞评论
 * @param {number} commentId 评论ID
 */
export function likeComment(commentId) {
  return service.post(`/api/comments/${commentId}/like`)
}

/**
 * 删除评论
 * @param {number} commentId 评论ID
 */
export function deleteComment(commentId) {
  return service.delete(`/api/comments/${commentId}`)
}

/**
 * 获取评论回复
 * @param {number} commentId 评论ID
 * @param {Object} params 查询参数
 */
export function getCommentReplies(commentId, params) {
  return service.get(`/api/comments/${commentId}/replies`, { params })
}

/**
 * 回复评论
 * @param {number} commentId 评论ID
 * @param {Object} data 回复数据
 * @param {string} data.content - 回复内容
 */
export function replyComment(commentId, data) {
  return service.post(`/api/comments/${commentId}/replies`, data)
}

/**
 * 获取热门标签
 */
export function getHotTags() {
  return service.get('/api/discussions/tags/hot')
}

/**
 * 获取所有标签
 */
export function getAllTags() {
  return service.get('/api/discussions/tags')
}

/**
 * 创建标签
 * @param {Object} data 标签数据
 * @param {string} data.name - 标签名称
 * @param {string} data.color - 标签颜色
 * @param {string} data.description - 标签描述
 */
export function createTag(data) {
  return service.post('/api/discussions/tags', data)
}

/**
 * 举报讨论
 * @param {number} discussionId 讨论ID
 * @param {Object} data 举报数据
 * @param {string} data.reason - 举报原因
 * @param {string} data.description - 详细描述
 */
export function reportDiscussion(discussionId, data) {
  return service.post(`/api/discussions/${discussionId}/report`, data)
}

/**
 * 举报评论
 * @param {number} commentId 评论ID
 * @param {Object} data 举报数据
 */
export function reportComment(commentId, data) {
  return service.post(`/api/comments/${commentId}/report`, data)
}

/**
 * 获取我发布的讨论
 * @param {Object} params 查询参数
 */
export function getMyDiscussions(params) {
  return service.get('/api/discussions/my', { params })
}

/**
 * 获取我收藏的讨论
 * @param {Object} params 查询参数
 */
export function getMyFavoriteDiscussions(params) {
  return service.get('/api/discussions/favorites', { params })
}

/**
 * 获取我点赞的讨论
 * @param {Object} params 查询参数
 */
export function getMyLikedDiscussions(params) {
  return service.get('/api/discussions/liked', { params })
}

// ==================== 兼容性别名函数 ====================

/**
 * 获取评论（别名函数，兼容旧代码）
 * @param {number} discussionId 讨论ID
 * @param {Object} params 查询参数
 */
export function getComments(discussionId, params) {
  return getDiscussionComments(discussionId, params)
}

/**
 * 创建评论（别名函数，兼容旧代码）
 * @param {number} discussionId 讨论ID
 * @param {Object} data 评论数据
 */
export function createComment(discussionId, data) {
  return addDiscussionComment(discussionId, data)
}
